package com.dc.designPattern._20_state.impl;

import cn.hutool.core.util.RandomUtil;
import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * Description: 状态模式_具体状态_可以抽奖的状态
 * @author: gdc
 * @date: 2021/6/8
 * @version 1.0
 */
@Data
@AllArgsConstructor
public class CanRaffleState implements State {

    private RaffleActivity activity;

    /**
     * 已经扣除离积分，不能再次扣除
     */
    @Override
    public void deductMoney() {
        System.out.println("已经扣除了积分");
    }

    @Override
    public boolean raffle() {
        System.out.println("正在抽奖，请稍等...");

        // 10% 中奖机会
        if (RandomUtil.randomInt(10) == 0) {
            // 改变活动状态为发放奖品状态
            activity.setState(activity.getDispenseState());
            return true;
        } else {
            System.out.println("很遗憾没有抽中奖品！");
            // 改变状态为不能抽奖
            activity.setState(activity.getNoRaffleState());
            return false;
        }
    }

    /**
     * 不能发放奖品
     */
    @Override
    public void dispensePrize() {
        System.out.println("没中奖，不能发放奖品");
    }
}
